home *** CD-ROM | disk | FTP | other *** search
- unit Builder1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, DB, DBTables, DBCtrls, ExtCtrls;
-
- type
- TForm1 = class(TForm)
- tblSource: TTable;
- Memo1: TMemo;
- btnBuildKeywordIndex1: TButton;
- DataSource1: TDataSource;
- btnBuildKeywordIndex2: TButton;
- qryDelete1: TQuery;
- dbMain: TDatabase;
- qryAdd1: TQuery;
- qryAdd2: TQuery;
- qryDelete2: TQuery;
- procedure btnBuildKeywordIndex1Click(Sender: TObject);
- procedure btnBuildKeywordIndex2Click(Sender: TObject);
- private
- public
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- uses
- Scanner;
-
- procedure TForm1.btnBuildKeywordIndex1Click(Sender: TObject);
- var
- MemoScanner: TMemoScanner;
- I: Integer;
- RecID: Integer;
- begin
- with tblSource do begin
- First;
- while not Eof do begin
- MemoScanner := TMemoScanner.Create(TBLOBField(FieldByName('Notes')));
- try
- with MemoScanner do begin
- Scan; { Scan the memo for keywords }
- dbMain.StartTransaction;
- try
- RecID := Trunc(tblSource.FieldByName('Species No').AsFloat);
- Memo1.Lines.Add(Format('Indexing %d; found %d keywords', [RecId, KeywordCount]));
-
- { Delete any existing keywords for this memo }
- with qryDelete1 do begin
- { SQL=DELETE FROM BioLifeIdx1 WHERE RecordID = :RecordID }
- ParamByName('RecordID').AsInteger := RecID;
- ExecSQL;
- end;
-
- { Rewrite new keywords }
- for I := 0 to KeywordCount - 1 do
- with qryAdd1 do begin
- { SQL=INSERT BioLifeIdx1 VALUES (:Keyword, :RecordID) }
- ParamByName('Keyword').AsString := Keywords[I];
- ParamByName('RecordID').AsInteger := RecID;
- ExecSQL;
- end;
- dbMain.Commit;
- except
- dbMain.Rollback;
- raise;
- end;
- end;
- finally
- MemoScanner.Free;
- end;
- Next;
- end;
- end;
- Memo1.Lines.Add('Done');
- end;
-
- procedure TForm1.btnBuildKeywordIndex2Click(Sender: TObject);
- var
- MemoScanner: TMemoScannerExt;
- I: Integer;
- RecID: Integer;
- begin
- with tblSource do begin
- First;
- while not Eof do begin
- MemoScanner := TMemoScannerExt.Create(TBLOBField(FieldByName('Notes')));
- try
- with MemoScanner do begin
- Scan; { Scan the memo for keywords }
- dbMain.StartTransaction;
- try
- RecID := Trunc(tblSource.FieldByName('Species No').AsFloat);
- Memo1.Lines.Add(Format('Indexing %d; found %d keywords', [RecId, KeywordCount]));
-
- { Delete any existing keywords for this memo }
- with qryDelete2 do begin
- { SQL=DELETE FROM BioLifeIdx2 WHERE RecordID = :RecordID }
- ParamByName('RecordID').AsInteger := RecID;
- ExecSQL;
- end;
-
- { Rewrite new keywords }
- for I := 0 to KeywordCount - 1 do
- with qryAdd2 do begin
- { SQL=INSERT BioLifeIdx2 VALUES
- (:Keyword, :RecordID, :WordOffset, :ByteOffset) }
- ParamByName('Keyword').AsString := Keywords[I];
- ParamByName('RecordID').AsInteger := Trunc(tblSource.FieldByName('Species No').AsFloat);
- ParamByName('WordOffset').AsInteger := WordOffset[I];
- ExecSQL;
- end;
- dbMain.Commit;
- except
- dbMain.Rollback;
- raise;
- end;
- end;
- finally
- MemoScanner.Free;
- end;
- Next;
- end;
- end;
- Memo1.Lines.Add('Done');
- end;
-
-
-
- end.
-